iT邦幫忙

2022 iThome 鐵人賽

DAY 18
0

今天我們來研究 Booleans(布林值)。

Python 內建有 bool class 表達布林值,這個 class 是從 int class 繼承而來:

issubclass(bool, int)
True

True and False 是兩個內建的常數,它們也是 singleton instances,意思是永遠唯一的物件。

True 值是1, False 值是2:

type(True), id(True), int(True)
(bool, 4375128864, 1)
type(False), id(False), int(False)
(bool, 4375128232, 0)

因為 bool class 繼承自 int class,TrueFalse 也是 int 的物件:

isinstance(True, bool)
True
isinstance(True, int)
True

既然 TrueFalse 是 singletons, 我們可以應用比對值是否相等的 == 運算子,也可以用比對 id 是否相等的 is 運算子:

id(True), id(1 < 2)
(4375128864, 4375128864)
id(False), id(1 == 3)
(4375128232, 4375128232)
(1 < 2) is True, (1 < 2) == True
(True, True)
(1 == 2) is False, (1 == 2) == False
(True, True)

任何整數都可以轉成 boolean,除了 0 以外其他整數都是

bool(x) = True

bool(0)
False
bool(1), bool(100), bool(-1)
(True, True, True)

因為 boolean 是 int class 的 subclass,所以對 boolean 用各種四則運算是合法的:

True > False
True
True + 2
3
False // 2
0
True + True + True
3
(True + True + True) % 2
1
-True
-1
100 * False
0

當然不要寫這種奇怪的 code!這邊只是讓我們更清楚,boolean 是 int 的 subclass。

好啦,我們明天見!

參考:Python 3: Deep Dive (Part 1 - Functional)


上一篇
Decimals: Performance 問題
下一篇
Booleans: Truth Values
系列文
小青蛇變大蟒蛇——進階Python學起來!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言